package easy;

import java.util.ArrayList;
import java.util.List;

/**
 * 给定一个非负整数 numRows，生成「杨辉三角」的前 numRows 行。
 * 在「杨辉三角」中，每个数是它左上方和右上方的数的和。
 */
public class leetcode118 {
    public static void main(String[] args) {
        System.out.println(generate(5));
    }

    public static List<List<Integer>> generate(int numRows) {
        // 定义一个存储杨辉三角的集合
        ArrayList<List<Integer>> lists = new ArrayList<>();
        lists.add(List.of(1));
        // 如果传入的传入的行数为1，则直接返回
        if (numRows == 1){return lists;}
        // 如果不为1，则进入循环
        for (int i = 0; i < numRows - 1; i++) {
            // 定义一个存储行数据的集合
            ArrayList<Integer> list = new ArrayList<>();
            // 第一个数始终为1
            list.add(1);
            // 获取上一个数组
            List<Integer> nums = lists.get(i);
            for (int j = 0; j < nums.size() - 1; j++) {
                // 计算上一个数组的当前位置值和前一位的值的和，并添加进新数组
                list.add(nums.get(j) + nums.get(j + 1));
            }
            // 最后一个数始终为1
            list.add(1);
            lists.add(list);
        }
        return lists;
    }
}
